from scipy.io import wavfile
from IPython.display import Audio
import numpy as np
import matplotlib.pyplot as plt
fs1, data1 = wavfile.read(r'C:\Users\JAY GOYAL\audio of sp prac\exp_5\Forest.wav')
Audio(data=data1, rate=fs1)
print("sampling frequency: ",fs1)
plt.plot(data1)
plt.xlabel("n -->")
plt.ylabel("Amplitude -->")
sampling frequency: 44100
Text(0, 0.5, 'Amplitude -->')
from scipy import signal
fs = 1000
t = np.arange(1000)/fs
signals = np.sin(2*np.pi*100*t)
plt.figure(figsize=(20,4))
plt.title("Signal A")
plt.plot(t,signals)
plt.xlabel("Frequency", color='r')
plt.ylabel("Amplitude", color='r')
Text(0, 0.5, 'Amplitude')
import scipy
from scipy.io import wavfile
import scipy.fftpack as fft
from scipy.signal import get_window
import IPython.display as ipd
import librosa
file_natural="Forest.wav"
signal, sr=librosa.load(file_natural)
print('Original sampling rate is',sr,'Hz')
signal, sr=librosa.load(file_natural,sr=16000)
print('The new sampling rate is set to',sr,'Hz')
print('The duration of the current audio sample is',len(signal)/sr,'s')
Original sampling rate is 22050 Hz The new sampling rate is set to 16000 Hz The duration of the current audio sample is 4.68 s
import librosa.display
librosa.display.waveplot(signal,sr=sr,color='purple')
plt.title('Time domain input')
plt.xlabel('Time')
plt.ylabel('Amplitude')
plt.show()
def normalize_audio(audio):
audio = audio / np.max(np.abs(audio))
return audio
signal = normalize_audio(signal)
plt.figure(figsize=(15,4))
plt.plot(np.linspace(0, len(signal) / sr, num=len(signal)), signal)
plt.grid(True)
ft=np.fft.fft(signal)
ft=np.abs(ft)
freq=np.linspace(0,sr,len(signal))
plt.plot(freq,ft,color='orange')
plt.title('Output after applying inbuilt FFT function')
plt.xlabel('Frequency')
plt.ylabel('Amplitude')
plt.show()
stft_n=1024
hop_len=256
stft=librosa.core.stft(signal,hop_length=hop_len,n_fft=stft_n)
specgram=librosa.amplitude_to_db(np.abs(stft))
librosa.display.specshow(specgram,sr=sr,hop_length=hop_len,cmap='magma')
plt.title('Spectogram using inbuilt function')
plt.xlabel('Time frame windows')
plt.ylabel('Frequency')
plt.colorbar()
plt.show()
fs2, data2 = wavfile.read('test.wav')
Audio(data=data2, rate=fs2)
print("sampling frequency: ",fs1)
plt.plot(data1)
plt.xlabel("n -->")
plt.ylabel("Amplitude -->")
sampling frequency: 44100
Text(0, 0.5, 'Amplitude -->')
from scipy import signal
fs = 1000
t = np.arange(1000)/fs
signals = np.sin(2*np.pi*100*t)
plt.figure(figsize=(20,4))
plt.title("Signal A")
plt.plot(t,signals)
plt.xlabel("Frequency", color='r')
plt.ylabel("Amplitude", color='r')
Text(0, 0.5, 'Amplitude')
file_natural="test.wav"
signal, sr=librosa.load(file_natural)
print('Original sampling rate is',sr,'Hz')
signal, sr=librosa.load(file_natural,sr=16000)
print('The new sampling rate is set to',sr,'Hz')
print('The duration of the current audio sample is',len(signal)/sr,'s')
Original sampling rate is 22050 Hz The new sampling rate is set to 16000 Hz The duration of the current audio sample is 2.0 s
librosa.display.waveplot(signal,sr=sr,color='purple')
plt.title('Time domain input')
plt.xlabel('Time')
plt.ylabel('Amplitude')
plt.show()
def normalize_audio(audio):
audio = audio / np.max(np.abs(audio))
return audio
signal = normalize_audio(signal)
plt.figure(figsize=(15,4))
plt.plot(np.linspace(0, len(signal) / sr, num=len(signal)), signal)
plt.grid(True)
ft=np.fft.fft(signal)
ft=np.abs(ft)
freq=np.linspace(0,sr,len(signal))
plt.plot(freq,ft,color='orange')
plt.title('Output after applying inbuilt FFT function')
plt.xlabel('Frequency')
plt.ylabel('Amplitude')
plt.show()
stft_n=1024
hop_len=256
stft=librosa.core.stft(signal,hop_length=hop_len,n_fft=stft_n)
specgram_1=librosa.amplitude_to_db(np.abs(stft))
librosa.display.specshow(specgram_1,sr=sr,hop_length=hop_len,cmap='magma')
plt.title('Spectogram using inbuilt function')
plt.xlabel('Time frame windows')
plt.ylabel('Frequency')
plt.colorbar()
plt.show()
plt.figure(figsize=(10,16))
plt.subplot(5,1,1)
print("Sampling frequency of Forest.wav file:",fs1)
plt.title("Spectogram using inbuilt function for forest")
plt.plot(data1)
plt.xlabel("Time frame in windows")
plt.ylabel("Frequency")
plt.figure(figsize=(10,16))
plt.subplot(5,1,2)
print("Sampling frequency of test.wav file",fs2)
plt.title("Spectogram using inbuilt function for test")
plt.plot(data2)
plt.xlabel("Time frame in windows")
plt.ylabel("Frequency")
plt.figure(figsize=(10,16))
plt.subplot(5,1,3)
print("Sampling frequency of Forest.wav file",fs1)
plt.title("Spectogram using inbuilt function for Forest")
plt.plot(specgram)
plt.xlabel("Time frame in windows")
plt.ylabel("Frequency")
plt.figure(figsize=(10,16))
plt.subplot(5,1,4)
print("Sampling frequency of test.wav file",fs2)
plt.title("Spectogram using inbuilt function for test")
plt.plot(specgram_1)
plt.xlabel("Time frame in windows")
plt.ylabel("Frequency")
#plt.plot(specgram)
#plt.plot(specgram_1)
Sampling frequency of Forest.wav file: 44100 Sampling frequency of test.wav file 8000 Sampling frequency of Forest.wav file 44100 Sampling frequency of test.wav file 8000
Text(0, 0.5, 'Frequency')
import plotly.graph_objects as go
y = normalize_audio(fs1)
fig = go.Figure()
fig.add_trace(go.Scatter(
y = data1,
line = dict(shape = 'spline' ),
name = 'forest file'
))
fig = go.Figure()
y1 = normalize_audio(fs2)
fig.add_trace(go.Scatter(
y = data2,
line = dict(shape = 'spline' ),
name = 'test file'
))
fig.show()
fs=22050
T1=1
T2=1
t1=np.arange(0,T1,1/fs)
t2=np.arange(0,T2,1/fs)
F1=1000
F2=2000
xx1=np.sin(2*np.pi*F1*t1) # signal with freq=1kHz and amp=1
xx2=2*np.sin(2*np.pi*F2*t2) # signal with freq=2kHz and amp=2
xx=np.concatenate([xx1,xx2])
xx.shape
(44100,)
plt.figure(figsize=(15,5))
plt.plot(xx)
plt.title("Recorded Speech File",size=15)
plt.xlabel("n -->")
plt.ylabel("Amplitude -->")
Text(0, 0.5, 'Amplitude -->')
n_fft=256
fs
22050
FL=int(10*10**-3*fs)
FL
220
OV=0.25*FL
OV
55.0
FS=int(FL-OV)
FS
165
X1=librosa.stft(xx, n_fft=n_fft, hop_length=FS, win_length=FL)
plt.plot(abs(X1[:,10]))
[<matplotlib.lines.Line2D at 0x1691911bd00>]
S1=librosa.amplitude_to_db(abs(X1)) ##Log Spectrum
import librosa.display
plt.figure(figsize=(15,5))
librosa.display.specshow(S1,sr=fs,hop_length=FS,x_axis='time',y_axis='linear')
plt.colorbar(format='%+2.0f dB')
<matplotlib.colorbar.Colorbar at 0x16919234a60>
fig = go.Figure()
y = normalize_audio(xx)
fig.add_trace(go.Scatter(
y = xx,
line = dict(shape = 'spline' ),
name = 'artificial file'
))
fig.show()